home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / icmp_leak.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  124 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4. # Thanks to Philippe Biondi <biondi@cartel-securite.fr> for his
  5. # help.
  6. #
  7. #
  8. # See the Nessus Scripts License for details
  9. #
  10. # Ref: http://www.cartel-securite.fr/pbiondi/adv/CARTSA-20030314-icmpleak
  11. # Ref: VU#471084 (http://www.kb.cert.org/vuls/id/471084)
  12. #
  13. # Refs:
  14. #  Date: Mon, 9 Jun 2003 08:56:55 +0200 (CEST)
  15. #  From: Philippe Biondi <biondi@cartel-securite.fr>
  16. #  To: vuln-dev@securityfocus.com, <full-disclosure@lists.netsys.com>,
  17. #        <bugtraq@securityfocus.com>
  18. #  Subject: Linux 2.0 remote info leak from too big icmp citation
  19.  
  20. if(description)
  21. {
  22.  script_id(11704);
  23.  script_version ("$Revision: 1.13 $");
  24.  script_cve_id("CAN-2003-0418");
  25.  
  26.  name["english"] = "icmp leak";
  27.  script_name(english:name["english"]);
  28.  
  29.  desc["english"] = "
  30. The remote host is vulnerable to an 'icmp leak' of
  31. potentially confidential data.  That is, when the 
  32. host generates an ICMP error packet other than 
  33. 'destination unreachable', the  error packet is 
  34. supposed to only contain the original message or 
  35. a portion of the original message. 
  36.  
  37. Due to a bug in the remote TCP/IP stack, these ICMP
  38. error messages will also contain fragments of the content 
  39. of the remote kernel memory.
  40.  
  41. An attacker may use this flaw to remotely sniff what is going into
  42. the host's memory, especially network packets that it sees, and
  43. obtain useful information such as POP passwords, HTTP authentication
  44. fields, and so on.
  45.  
  46.  
  47. Solution : Contact your vendor for a fix. If the remote host is running
  48.            Linux 2.0, upgrade to Linux 2.0.40.
  49. See also : http://www.cartel-securite.fr/pbiondi/adv/CARTSA-20030314-icmpleak
  50.            http://www.kb.cert.org/vuls/id/471084
  51. Risk factor : High";
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  script_description(english:desc["english"]);
  58.  
  59.  summary["english"] = "icmpleak check";
  60.  
  61.  script_summary(english:summary["english"]);
  62.  
  63.  script_category(ACT_GATHER_INFO);
  64.  
  65.  
  66.  script_copyright(english:"This script is Copyright (C) 2003 Tenable Network Security");
  67.  family["english"] = "Misc.";
  68.  script_family(english:family["english"]);
  69.  script_dependencies("os_fingerprint.nasl");
  70.  exit(0);
  71. }
  72.  
  73.  
  74.  
  75.  
  76. #
  77. # The script code starts here
  78.  
  79. if(islocalhost())exit(0);
  80.  
  81. os = get_kb_item("Host/OS/icmp");
  82. if ( os && !egrep(pattern:"Linux 2\.[0-2]", string:os) ) exit(0);
  83.  
  84.  
  85. # Sends a fragmented ping packet
  86. function send_frag_ping()
  87. {
  88.     local_var ip, icmp;
  89.  
  90.     ip = forge_ip_packet(ip_hl : 5, ip_v : 4, ip_tos: 0, ip_len : 46,
  91. ip_id: rand(), ip_off: IP_MF, ip_ttl: 64, ip_p : IPPROTO_ICMP, ip_src : this_host(), ip_dst:get_host_ip());
  92.  
  93.     icmp = forge_icmp_packet(ip:ip, icmp_type:8, icmp_code:0, icmp_seq:0, icmp_id:0, data:crap(length:18, data:"X"));
  94.  
  95.     filter = string("icmp and src ", get_host_ip(), " and icmp[0] = 11 and icmp[1] = 1 and icmp[36]=88 and icmp[37]=88");
  96.     
  97.     for(i=0;i<5;i++)
  98.     {
  99.      send_packet(icmp, pcap_active:FALSE);
  100.      sleep(1);
  101.     }
  102.     
  103.     rep = send_packet(icmp, pcap_active:TRUE, pcap_filter:filter, pcap_timeout:31);
  104.     if(rep) return(rep);
  105.     else return NULL;
  106. }
  107.  
  108.  
  109. rep = send_frag_ping();
  110. if( rep != NULL )
  111. {
  112.  start = 20 + 8 + 28;
  113.  end   = strlen(rep);
  114.  for(i = start ; i < end ; i ++)
  115.  {
  116.   if(rep[i] != "X" )
  117.   {
  118.     security_hole(proto:"icmp", port:0);
  119.     exit(0);
  120.   }
  121.  }
  122. }
  123.